﻿using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Collections;
using System.Data;
using System.ComponentModel;
using System.Data.OracleClient;
namespace INTEX.DataBase.Tools
{
    public partial class INTEXDBC
    {
        public void MapICC_GABEW(ref DataRow dwLocal, DataRow dwData)
        {
            BlindMap(ref dwLocal, dwData);
        }
        public void SaveICC_GABEW(DataRow dwData, string ITXDBVERSION = "50.24")
        {
            DataSet Result = new DataSet();
            DataTable tbLocal = null;
            DataRow dwLocal = null;
            bool flgExist = false;
            Result = QueryICC_GABEW(dwData);
            if (Result.Tables.Count > 0)
            {
                tbLocal = Result.Tables[0];
                if (tbLocal.Rows.Count > 0)
                {
                    flgExist = true;
                    dwLocal = tbLocal.Rows[0];
                }
                else
                {
                    dwLocal = tbLocal.NewRow();
                }
            }

            MapICC_GABEW(ref dwLocal, dwData);

            if (!flgExist)
            {
                dwLocal["ROWNID"] = GetSeq();
                InsertICC_GABEW(dwLocal, 1);
            }
            UpdateICC_GABEW(dwLocal);
        }
        public void InsertICC_GABEW(DataRow dwData, int option=1)
        {
             
            OracleCommand or1;
            or1 = OracleDB.CreateCommand();
            switch (option)
            {
                case 1:
                    or1.CommandText = "INSERT INTO ICC_GABEW SELECT * FROM GABEW W WHERE W.GABBELEG>=:GABBELEG AND NOT EXISTS ( SELECT 1 FROM ICC_GABEW X WHERE X.GABBELEG=W.GABBELEG AND X.GABLFDNR=W.GABLFDNR)";
                    or1.Parameters.Add("GABBELEG", OracleType.NVarChar).Value = dwData["GABBELEG"].ToString();
                    break;
                default:
                    break;
            }            
            Connect2Proxy(or1);
        }
        public void DeleteICC_GABEW(DataRow dwData, int option = 1)
        {

            OracleCommand or1 = OracleDB.CreateCommand();
            switch (option)
            {
                case 1:
                    or1.CommandText = "DELETE FROM ICC_GABEW"
                 + " WHERE GABBELEG<=:GABBELEG";
                    or1.Parameters.Add("GABBELEG", OracleType.NVarChar).Value = dwData["GABBELEG"].ToString();
                    break;
                default: 
                    break;
            }
            Connect2Proxy(or1);
        }
        public DataSet QueryICC_GABEW(DataRow dwData, int option = 1)
        {
            DataSet Return;
            DataSet Result = new DataSet();
            OracleCommand or1 = OracleDB.CreateCommand();
            switch (option)
            {
                case 1:
                    or1.CommandText = "SELECT NVL(MAX(GABBELEG),0) AS GABBELEG  FROM ICC_GABEW"; ;                     
                    break;
                case 2:
                    or1.CommandText = "SELECT NVL(MAX(GABBELEG),0) AS GABBELEG  FROM ICC_GABEW WHERE GABBUCHDAT<=:GABBUCHDAT"; ;
                    or1.Parameters.Add("GABBUCHDAT", OracleType.NVarChar).Value = dwData["GABBUCHDAT"].ToString();
                    break;  
                case 3:
                    or1.CommandText = "SELECT W.*,SCN FROM ICC_GABEW W JOIN GPDAT ON GABPARTIE=GPPARTIE LEFT JOIN ICC_GABBS X ON  W.GABBS=X.GABBS WHERE GABBUCHDAT=:GABBUCHDAT AND GPSPPART=:GPSPPART AND GPZWPART=:GPZWPART AND GPFBPART=:GPFBPART"; ;
                    or1.Parameters.Add("GABBUCHDAT", OracleType.NVarChar).Value = dwData["MDATE"].ToString();
                    or1.Parameters.Add("GPSPPART", OracleType.NVarChar).Value = dwData["GPSPPART"].ToString();
                    or1.Parameters.Add("GPZWPART", OracleType.NVarChar).Value = dwData["GPZWPART"].ToString();
                    or1.Parameters.Add("GPFBPART", OracleType.NVarChar).Value = dwData["GPFBPART"].ToString(); 
                    break;   
                default:
                    break;
            }
            Result = Connect2Proxy(or1);
            if (Result.Tables.Count > 0)
                Result.Tables[0].TableName = "ICC_GABEW";
            Return = Result;
            return Return;
        }
        public void UpdateICC_GABEW(DataRow dwData, string ITXDBVERSION = "50.24")
        {
            OracleCommand or1;
            DataSet Result = new DataSet();
            or1 = OracleDB.CreateCommand();
            #region====Command====
            or1.CommandText = "UPDATE ICC_GABEW SET "
                + "GABBS=:GABBS,"
                + "EN=:EN,"
                + "SCN=:SCN "
                + " WHERE  "
                + "    ROWNID=:ROWNID ";
            #endregion
            #region====Parameters==== 
            or1.Parameters.Add("ROWNID", OracleType.NVarChar).Value = dwData["ROWNID"].ToString(); 
            or1.Parameters.Add("GABBS", OracleType.NVarChar).Value = dwData["GABBS"].ToString();
            or1.Parameters.Add("EN", OracleType.NVarChar).Value = dwData["EN"].ToString();
            or1.Parameters.Add("SCN", OracleType.NVarChar).Value = dwData["SCN"].ToString();
            #endregion
            Connect2Proxy(or1);
        }
    }
}
